if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
    message(STATUS "Running on Linux")
elseif (CMAKE_SYSTEM_NAME STREQUAL "Windows")
    message(STATUS "Running on Windows")
    include_directories("D:/vcpkg_install/vcpkg/installed/x64-windows/include/libpng16")
    link_directories("$D:/vcpkg_install/vcpkg/installed/x64-windows/lib")
elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
    message(STATUS "Running on macOS")
    link_directories("/opt/homebrew/Cellar/libpng/1.6.47/lib")
    include_directories("/opt/homebrew/Cellar/libpng/1.6.47/include")
endif ()

add_library(gpu_effect_engine SHARED
        EffectEngine.cpp
        EffectEngine.h
        filters/BasicFilter.cpp
        filters/BasicFilter.h
        filters/impl/GrayFilter.cpp
        filters/impl/GrayFilter.h
        gpu/VkGPUHelper.cpp
        gpu/VkGPUHelper.h
        utils/IOUtils.cpp
        utils/IOUtils.h
        utils/TimeUtils.cpp
        utils/TimeUtils.h
        utils/ImageUtils.cpp
        utils/ImageUtils.h
        gpu/VKGPUContext.cpp
        gpu/VKGPUContext.h
        filters/IFilter.h
        gpu/VkGPUComputePipeline.cpp
        gpu/VkGPUComputePipeline.h
        gpu/VkGPUDescriptorSet.cpp
        gpu/VkGPUDescriptorSet.h
        gpu/compute_graph/ComputeGraph.cpp
        gpu/compute_graph/ComputeGraph.h
        gpu/compute_graph/IComputeGraphNode.h
        gpu/compute_graph/PipelineComputeGraphNode.cpp
        gpu/compute_graph/PipelineComputeGraphNode.h
        filters/impl/GaussianBlurFilter.cpp
        filters/impl/GaussianBlurFilter.h
        filters/impl/OldGaussianBlurFilter.cpp
        filters/impl/OldGaussianBlurFilter.h
        gpu/compute_graph/BufferCopyComputeGraphNode.h
        gpu/compute_graph/BufferCopyComputeGraphNode.cpp
        filters/impl/ChinesePaintFilter.h
        filters/impl/ChinesePaintFilter.cpp
        filters/impl/ColorPencilSketchFilter.cpp
        filters/impl/ColorPencilSketchFilter.h
        filters/impl/ColorSeparationFilter.cpp
        filters/impl/ColorSeparationFilter.h
        filters/impl/ScaleFilter.cpp
        filters/impl/ScaleFilter.h
        filters/impl/RadialBlurFilter.cpp
        filters/impl/RadialBlurFilter.h
        filters/impl/FocusBlurFilter.cpp
        filters/impl/FocusBlurFilter.h
        filters/impl/SurfaceBlurFilter.cpp
        filters/impl/SurfaceBlurFilter.h
        blenders/IBlender.h
        blenders/BaseBlender.cpp
        blenders/BaseBlender.h
        blenders/impl/DissolveBlender.cpp
        blenders/impl/DissolveBlender.h
        blenders/impl/MultiplyBlender.cpp
        blenders/impl/MultiplyBlender.h
        blenders/impl/OverlayBlender.cpp
        blenders/impl/OverlayBlender.h
        blenders/impl/LighterColorBlender.cpp
        blenders/impl/LighterColorBlender.h
        log/Log.h
        config.h
)
target_link_libraries(gpu_effect_engine vulkan)
if (CMAKE_SYSTEM_NAME MATCHES "OHOS")
else ()
    target_link_libraries(gpu_effect_engine png)
endif ()
if (CMAKE_SYSTEM_NAME MATCHES "OHOS")
    target_link_libraries(gpu_effect_engine hilog_ndk.z)
endif ()